package com.crm.service.finishOrderProductManager;

import com.crm.model.entity.finishOrderProduct.FinishOrderProduct;
import com.crm.model.qo.finishOrderProductManager.AnewSendFinishProductQO;
import com.crm.model.qo.finishOrderProductManager.FinishOrderProductQO;
import com.crm.model.vo.finishOrderProduct.*;

import java.util.List;

/**
 * @Author:chaifuyou
 * @Date: 2021/7/30 14:40
 */
public interface FinishOrderProductDbService {

    /**
     * 查询完成订单的产品
     * @param order
     * @param qo
     * @return
     */
    List<FinishOrderProductVO> selectCustomerProductList(String order, FinishOrderProductQO qo,Integer dateUnit);

    /**
     * 修改完成订单的产品信息
     * @param finishOrderProduct
     */
    boolean updateFinishOrderProduct(FinishOrderProduct finishOrderProduct);

    /**
     * 查询未发放提成的产品
     * @return
     */
    List<ExportFinishOrderProductVO> selectExportFinishOrderProduct(String companyId,Integer dateUnit);

    /**
     * 根据产品号查询当前产品录没录提成
     * @param finishOrderProductNum
     */
    String selectOrderProductRoyaltyStatus(String finishOrderProductNum);

    /**
     * 根据产品号查询
     * @param finishOrderProductNum
     * @return
     */
    FinishOrderProductVO selectFinishOrderProductByNumber(String finishOrderProductNum);

    /**
     * 通过订单id和订单明细类型查询为产品类型为  1 的产品
     * @param productOrderId 订单id
     * @param type 订单明细类型--1:产品类型;2:活动类型;3:赠品活动类型;4:兑换类型
     * @return
     */
    List<FinishOrderProduct> selectCustomerProductListByOrderId(String productOrderId, String type);

    /**
     * 查询需要补发产品的信息
     * @param order
     * @param qo
     * @param dateUnit
     * @return
     */
    List<AnewSendFinishProductVO> selectAnewSendFinishProduct(String order, AnewSendFinishProductQO qo, Integer dateUnit);

    List<FinishOrderProductVO> selecttestFinishList();

    /**
     * 查询需要同步finish表合同编号订单编号客户名称的
     * @return
     */
    List<FinishOrderProductVO> selectOrderNumberIsNull();

    /**
     * 通过finishId查询finsh产品数据
     * @param finishOrderProductId 订单完成产品id
     * @return
     */
    FinishOrderProduct selectFinishOrderProductById(String finishOrderProductId);

    /**
     * 查询订单下的finish表数据（不含赠品）
     * @param orderId
     * @return
     */
    List<FinishOrderProductVO> selectOrderFinishProduct(String orderId,Integer type);

    /**
     * 查询余额支付的订单下的产品（不含赠品）
     * @param customerId
     * @return
     */
    List<FinishOrderProductVO> selectBalanceOrderFinishProduct(String customerId);

    List<FinishOrderProductVO> selectFinishNumberByOrderIdAndProduct(String orderId);

    List<FinishOrderProduct> selectFinishByOrderIdAndProductNumber(String productOrderId, String productName);

    List<FinishOrderProductVO> selectFinish19(String orderId,String productId);

    List<FinishOrderProductVO> selectFinish129();

    /**
     * 批量补充订单完成表客户信息(临时用补充正式库数据:customer_name为空的)
     * @param finishOrderProductList
     * @author yincuimei
     * @Date 2021-09-28
     * @return
     */
    Boolean batchUpdateFinishOrderProductByOrderId(List<FinishOrderProduct> finishOrderProductList);

    /**
     * 根据产品号修改产品状态和到款时间
     * @Param finishOrderProduct
     * @Author xielinqi
     * @Date 3:18 下午 2021/11/8
     */
    Boolean updateArriveTimeAndOtherSelectiveInfo(FinishOrderProduct finishOrderProduct);

    /**
     * 根据订单id修改产品状态和到款时间
     * @Param fop
     * @Author xielinqi
     * @Date 6:56 下午 2021/11/9
     */
    int updateArriveTimeAndOtherSelectiveInfoByProductOrderId(FinishOrderProduct fop);

    /**
     * 根据订单id和产品状态查询产品列表
     * @Param orderId
     * @Param productStatus
     * @Author xielinqi
     * @Date 9:06 上午 2021/11/15
     */
    List<FinishOrderProductVO> selectListByProductOrderId(String orderId, String productStatus);

    /**
     * opp客户购买产品
     * @param customerName
     * @return
     */
    List<ExportOppFinishProductVO> exportOppCustomerFinishProduct(List customerList);
}
